package cz.muni.fi.pa165.musiclibrary.api.service.dto;

import javax.annotation.Nonnull;

/**
 *
 * @author Martin Szabo
 * 2012-10-28T22:25:51+0100
 */
public interface IArtistDTO {
    
    /**
     * Returns identifier of this artist.
     * @return Identifier of this artist.
     */
    @Nonnull
    Long getIdArtist();
    
    /**
     * Returns name of this artist.
     * @return Name of this artist.
     */
    @Nonnull
    String getName();
    
    /**
     * Returns description of this artist.
     * @return description of this artist.
     */
    @Nonnull
    String getDescription();
    
    /**
     * Sets identifier of this artist.
     * @param idArtist Identifier of this artist. Cannot be {@code null}.
     */
    void setIdArtist(@Nonnull final Long idArtist);
    
    /**
     * Sets name of this artist.
     * @param name Name of this artist. Cannot be {@code null}.
     */
    void setName(@Nonnull final String name);
    
    /**
     * Sets description of this artist.
     * @param description Description of this artist.
     */
    void setDescription(final String name);
    
    /**
     * Two artists are equal, if and only if their identifiers 
     * ({@link #getIdArtist()}) are equal.
     * 
     * @param obj The reference object with which to compare.
     * @return {@code true} if this object is the same as the obj
     *          argument; {@code false} otherwise.
     */
    @Override
    boolean equals(final Object obj);
    
    /**
     * Returns hash code value for this object based on {@link #getIdArtist()} value. 
     * @return Hash code value for this object.
     */
    @Override
    int hashCode();
}
